/**
 * 工具包
 */
// 将xml转换成js对象的
const {parseString} = require('xml2js')
// 文件读写模块
const {writeFile, readFile} = require('fs')
// path模块
const {resolve} = require('path')

module.exports = {
    getUserDataAsync(req) {
        return new Promise((resolve, reject) => {
            let xmlData = ''
            req.on('data', data => {
                // 当流式数据传递过来时会触发此事件，会将流式数据注入到回调函数中
                //console.log(data)
                xmlData += data.toString()
            })
                .on('end', () => {
                    //当数据接收完毕时会触发当前
                    resolve(xmlData)
                })
        })
    },
    parseXMLAsync(xmlData) {
        return new Promise((resolve, reject) => {
            parseString(xmlData, {trim: true}, (err, data) => {
                if (!err) {
                    resolve(data)
                } else {
                    reject('parseXMLAsync方法出了问题：' + err)
                }
            })
        })
    },
    formatMessage(jsData) {
        let message = {}
        // 获取xml对象
        jsData = jsData.xml
        // 判断数据是否是一个对象
        if (typeof jsData === 'object') {
            // 遍历对象
            for (let key in jsData) {
                // 获取属性值
                let value = jsData[key]
                // 过滤掉空数据
                if (Array.isArray(value)) {
                    message[key] = value[0]
                }
            }
        }
        return message
    },
    writeFileAsync(data, fileName) {
        // 将对象转换成json字符串
        data = JSON.stringify(data)
        const filePath = resolve(__dirname,fileName)
        return new Promise((resolve, reject) => {
            // 将accessToken保存一个文件
            writeFile(filePath, data, err => {
                if (!err) {
                    console.log('文件保存成功~')
                    resolve()
                } else {
                    reject(err)
                }
            })
        })
    },
    readFileAsync(fileName) {
        const filePath = resolve(__dirname,fileName)
        return new Promise((resolve, reject) => {
            // 读取一个文件
            readFile(filePath, (err, data) => {
                if (!err) {
                    console.log('文件读取成功~')
                    // 将json字符串转成成对象
                    data = JSON.parse(data)
                    resolve(data)
                } else {
                    reject(err)
                }
            })
        })
    }
}